home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d6 / glazer.arc / DEPGROWS.BAS < prev    next >
BASIC Source File  |  1988-10-07  |  3KB  |  67 lines

  1. 100 'Savings With Growing Deposits ("DEPGROWS")
  2. 110 CLS
  3. 120 COLOR 0,15 : PRINT "Savings With Growing Deposits" : COLOR 15,0
  4. 130 DEFDBL A-Z
  5. 140 DEFINT M-N
  6. 150 'Define function to convert annual rate to periodic rate
  7. 160 DEF FNCONV (V) = (1 + V / 100) ^ (1 / NPY) - 1
  8. 170 MONEYFMT$ = "$$##,###,###.##"
  9. 180 '     Let user select type of result
  10. 190 PRINT
  11. 200 PRINT "Select desired result:"
  12. 210 PRINT
  13. 220 PRINT "1 - Initial deposit"
  14. 230 PRINT "2 - Rate of growth in deposits"
  15. 240 PRINT "3 - Final balance"
  16. 250 PRINT
  17. 260 INPUT "Result number: ", RESULT
  18. 270 IF RESULT < 1 OR RESULT > 3  THEN PRINT "Select 1-3 only" : GOTO 210
  19. 280 PRINT
  20. 290 '     Let user enter data
  21. 300 PRINT "Do not enter dollar signs or commas"
  22. 310 PRINT
  23. 320 IF RESULT <> 1 THEN INPUT "Initial deposit: ", PV
  24. 330 IF RESULT <> 2 THEN INPUT "Annual growth rate in deposit (in percent): ",                      GROWTHRATE
  25. 340 IF RESULT <> 3 THEN INPUT "Savings goal: ", FV
  26. 350 INPUT "Annual interest rate (in percent): ", AR
  27. 360 INPUT "Number of periods: ", NPERIODS
  28. 370 INPUT "Number of periods per year: ", NPY
  29. 380 INPUT "Marginal tax rate (in percent): ", TAXRATE
  30. 390 INPUT "Annual inflation rate (in percent): ", INFLATION
  31. 400 PRINT
  32. 410 '     Compute periodic rates
  33. 420 PR = FNCONV (AR)                  'Periodic interest rate
  34. 430 PR = PR * (1 - TAXRATE / 100)     'After-tax interest rate
  35. 440 GR = FNCONV (GROWTHRATE)          'Periodic growth in deposit
  36. 450 INFLATION = FNCONV (INFLATION)    'Periodic inflation rate
  37. 460 FV = FV * (1 + INFLATION) ^ NPERIODS
  38. 470 ON RESULT GOTO 490, 540, 690
  39. 480 '     Result 1: Find required initial deposit
  40. 490 PV = FV * (PR - GR) / (1 + PR)
  41. 500 IF PR <> GR  THEN PV = PV / ( (1 + PR) ^ NPERIODS - (1 + GR) ^ NPERIODS)                     ELSE PV = FV * (1 + PR) ^ -NPERIODS / NPERIODS
  42. 510 PRINT "Required initial deposit: "; USING MONEYFMT$; PV
  43. 520 END
  44. 530 '     Result 2: Required growth in deposits
  45. 540 GRLOWER = -.5
  46. 550 GRUPPER = .5
  47. 560 WHILE ABS (GRUPPER - GRLOWER) > .00001
  48. 570   TRIALGR = (GRUPPER + GRLOWER) / 2
  49. 580   IF PR <> TRIALGR  THEN TRIALFV = PV * (1 + PR) / (PR - TRIALGR)
  50. 590   TRIALFV = TRIALFV * ( (1 + PR) ^ NPERIODS - (1 + TRIALGR) ^ NPERIODS)
  51. 600   IF PR = TRIALGR  THEN TRIALFV = NPERIODS * PV * (1 + PR) ^ NPERIODS
  52. 610   IF TRIALFV > FV  THEN GRUPPER = TRIALGR  ELSE GRLOWER = TRIALGR
  53. 620 WEND
  54. 630 GROWTHRATE = (GRUPPER + GRLOWER) / 2
  55. 640 GROWTHRATE = ( (1 + GROWTHRATE) ^ NPY - 1) * 100
  56. 650 PRINT "Required annual growth rate in deposit: ";
  57. 660 PRINT USING "###.##_%"; GROWTHRATE
  58. 670 END
  59. 680 '     Result 3: Find final balance
  60. 690 IF PR <> GR  THEN FV = PV * (1 + PR) / (PR - GR)
  61. 700 IF PR <> GR  THEN FV = FV * ( (1 + PR) ^ NPERIODS - (1 + GR) ^ NPERIODS)
  62. 710 IF PR = GR  THEN FV = NPERIODS * PV * (1 + PR) ^ NPERIODS
  63. 720 FV = FV * (1 + INFLATION) ^ -NPERIODS  'Adjust for inflation
  64. 730 PRINT
  65. 740 PRINT "Final balance: "; USING MONEYFMT$; FV
  66. 750 END
  67.